#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

int main()
{
   char * const myenv[] = {
        "MYPATH=/usr/bin/xxx",
        "MYVALUE=123",
        NULL 
   }; 

    execle("./otherExe","otherExe","-a","-b", NULL, myenv);


    //extern char** environ; // 系统的全局环境变量
    //putenv("PRIVETAE_VALUE=123321");
    //execle("./otherExe","otherExe","-a","-b", NULL, environ);
    

    // char* const myargv[] = {
    //     "otherExe",
    //     "-a",
    //     "-b",
    //     NULL
    // };
    // //execl("/usr/bin/bash", "bash", "test.sh",NULL);
    // execv("otherExe", myargv);

    return 0;
}

// int main()
// {
//     printf("before : pid : %d, ppid : %d\n", getpid(), getppid());
//     execl("/usr/bin/ls", "ls", "-a", "-l", NULL);
//     printf("after : pid : %d, ppid : %d\n", getpid(), getppid());

//     return 0;
// }

// int main()
// {
//     pid_t id = fork();
    
//     if(id == 0)//子进程
//     {
//         // char *const myargv[] = {
//         //     "is",
//         //     "-a",
//         //     "-l",
//         //     NULL
//         // } ;
//         printf("before : pid : %d, ppid : %d\n", getpid(), getppid());
//         sleep(5);

//         //execl("/usr/bin/ls", "ls", "-a", "-l", NULL);
//         //execlp("ls", "ls", "-a", "-l", NULL);
//         //execv("/usr/bin/ls", myargv);
//         //execl("./otherExe", "otherExe", NULL);
//         execl("/usr/bin/bash", "bash", "test.sh",NULL);
//         printf("after : pid : %d, ppid : %d\n", getpid(), getppid());
//         exit(0);
//     }

//     //父进程
//     pid_t ret = waitpid(id, NULL, 0); // 阻塞式等待子进程并且不关心它的状态
//     if(ret > 0) printf("wait success, father pid : %d , ret : %d\n",getpid(), ret);
//     sleep(3); // 为了看到子进程退出
//     return 0;       
// }